const sqlite3 = require('sqlite3').verbose();
const path = require('path');

// 打开数据库连接
const dbPath = path.join(__dirname, 'prisma', 'dev.db');
const db = new sqlite3.Database(dbPath, (err) => {
  if (err) {
    console.error('打开数据库失败:', err.message);
    process.exit(1);
  }
  console.log('已连接到SQLite数据库');
});

// 开始事务
db.serialize(() => {
  db.run('BEGIN TRANSACTION');

  console.log('开始清除测试订单数据...');

  // 按照外键约束顺序删除数据
  console.log('删除订单项...');
  db.run(`DELETE FROM OrderItem WHERE orderId IN (SELECT id FROM "Order" WHERE orderNo LIKE 'TEST-%')`, function(err) {
    if (err) {
      console.error('删除订单项失败:', err.message);
      db.run('ROLLBACK');
      process.exit(1);
    }
    console.log(`已删除订单项: ${this.changes}个`);
  });

  console.log('删除支付记录...');
  db.run(`DELETE FROM Payment WHERE orderId IN (SELECT id FROM "Order" WHERE orderNo LIKE 'TEST-%')`, function(err) {
    if (err) {
      console.error('删除支付记录失败:', err.message);
      db.run('ROLLBACK');
      process.exit(1);
    }
    console.log(`已删除支付记录: ${this.changes}个`);
  });

  console.log('删除订单...');
  db.run(`DELETE FROM "Order" WHERE orderNo LIKE 'TEST-%'`, function(err) {
    if (err) {
      console.error('删除订单失败:', err.message);
      db.run('ROLLBACK');
      process.exit(1);
    }
    console.log(`已删除订单: ${this.changes}个`);
    
    // 提交事务
    db.run('COMMIT', function(err) {
      if (err) {
        console.error('提交事务失败:', err.message);
        db.run('ROLLBACK');
      } else {
        console.log('测试订单数据清除完成！');
      }
      
      // 关闭数据库连接
      db.close((err) => {
        if (err) {
          console.error('关闭数据库失败:', err.message);
        }
        console.log('数据库连接已关闭');
      });
    });
  });
}); 